#ifndef POCS_H
#define POCS_H

#include "includes.h"
#include "ScanData.h"

double atan3(double y,double x);
double ShiftPosition(double);
double DetectorPosition(double , double, double, double );

double DFint(const ScanData& , const std::vector<std::vector<double> >&  , int , double );
double Fint(const ScanData&  , int , double );
void P1hilbert(ScanData & s);
void P2compact(ScanData & s);
void P3apriori(ScanData & s);
void P4fproject(ScanData & s);
void P5nonneg(ScanData & s);
void backproj(ScanData &);
void prepare(ScanData & s);

double IndexPosition( const ScanData& , const int );
int PositionIndex(const ScanData&, const double, bool);
bool isMissing(const ScanData& , const double);
bool isHilbertKnown(const ScanData&, double , double );
void project(ScanData&, const std::vector<std::vector<double> >&, double&, int, int, double, double, bool);
#endif
